package com.biz.primus.ms.sms.dao.redis;

import com.biz.primus.base.redis.CrudRedisDao;
import com.biz.primus.base.redis.util.RedisUtil;
import com.biz.primus.model.misc.enums.SMSType;
import com.biz.primus.ms.sms.dao.ro.SmsTemplateRo;
import org.springframework.stereotype.Repository;

/**
 * 类说明：短信模版RedisDao
 *
 * @author xiaoyasong
 * @version 创建时间：2017年1月4日 上午11:53:10
 * @E-mail:yasong.xiao@biz-united.com.cn
 */
@Repository
public class SmsTemplateRedisDao extends CrudRedisDao<SmsTemplateRo, Long> {

    @Override
    public void save(SmsTemplateRo ro) {
        super.save(ro);
        set(typeMappingKey(ro.getType()), RedisUtil.toByteArray(ro.getId()));

    }

    @Override
    public void delete(SmsTemplateRo ro) {
        super.delete(ro);
        del(typeMappingKey(ro.getType()));
    }

    /**
     * 方法说明:根据短信模型查询SmsTemplateRo
     *
     * @param type
     * @return
     * @author xiaoyasong
     * @version 2017年1月4日
     */
    public SmsTemplateRo getByType(SMSType type) {
        byte[] bs = get(typeMappingKey(type));
        if (bs == null) return null;
        Long id = RedisUtil.byteArrayToLong(bs);
        return findOne(id);
    }

    private String typeMappingKey(SMSType type) {
        return getKeyByParams("type", type);
    }
}
